package modelo;

import java.sql.Date;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;

import ViewObjects.ProveedorView;

@Entity
public class Proveedor {
	@Id
	private int idProveedor;
	private String razonSocial;
	private String direccion;
	private String telefono;
	// private List<CondicionVentaProv> condicionesVenta;
	// private List<DescuentoProv> descuentos;
	@OneToMany(cascade = CascadeType.ALL)
	@JoinColumn(name = "idProveedor")
	private List<Remito> remitos;
	@OneToMany(cascade = CascadeType.ALL)
	@JoinColumn(name = "idProveedor")
	private List<OrdenCompra> ordenesCompra;
	@OneToMany(cascade = CascadeType.ALL)
	@JoinColumn(name = "idProveedor")
	private List<ListaPrecios> listasPrecios;

	public Proveedor() {
		super();
	}

	public Proveedor(int idProveedor2, String razonSocial2, String direccion2,
			String telefono2) {

		this.idProveedor = idProveedor2;
		this.razonSocial = razonSocial2;
		this.direccion = direccion2;
		this.telefono = telefono2;
		this.remitos = new ArrayList<Remito>();
		this.ordenesCompra = new ArrayList<OrdenCompra>();
		this.listasPrecios = new ArrayList<ListaPrecios>();
		// this.condicionesVenta = new ArrayList<CondicionVentaProv>();
		// this.descuentos = new ArrayList<DescuentoProv>();

	}

	public void modificarProveedor(String razonSocial2, String direccion2,
			String telefono2) {

		this.razonSocial = razonSocial2;
		this.direccion = direccion2;
		this.telefono = telefono2;
	}

	public void altaListaPrecios(int idLista, Date FechaVigencia,
			float descuentoLista) {

	}

	public void agregarItemLista(int idLista, Rodamiento rodamiento,
			int StockDisp, float PrecioUnit, float porcDescuento) {

	}

	public void altaRemito(int nroRemito, Date Fecha, int OrdenCompraRel) {

	}

	public void agregarItemRemito(int NroRemito, String codigoSFK, int cantidad) {

	}

	/**
	 * @return the idProveedor
	 */
	public int getIdProveedor() {
		return idProveedor;
	}

	/**
	 * @param idProveedor
	 *            the idProveedor to set
	 */
	public void setIdProveedor(int idProveedor) {
		this.idProveedor = idProveedor;
	}

	/**
	 * @return the razonSocial
	 */
	public String getRazonSocial() {
		return razonSocial;
	}

	/**
	 * @param razonSocial
	 *            the razonSocial to set
	 */
	public void setRazonSocial(String razonSocial2) {
		razonSocial = razonSocial2;
	}

	/**
	 * @return the direccion
	 */
	public String getDireccion() {
		return direccion;
	}

	/**
	 * @param direccion
	 *            the direccion to set
	 */
	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	/**
	 * @return the telefono
	 */
	public String getTelefono() {
		return telefono;
	}

	/**
	 * @param telefono
	 *            the telefono to set
	 */
	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	/**
	 * @return the remitos
	 */
	public List<Remito> getRemitos() {
		return remitos;
	}

	/**
	 * @param remitos
	 *            the remitos to set
	 */
	public void setRemitos(List<Remito> remitos) {
		this.remitos = remitos;
	}

	/**
	 * @return the ordenesCompra
	 */
	public List<OrdenCompra> getOrdenesCompra() {
		return ordenesCompra;
	}

	/**
	 * @param ordenesCompra
	 *            the ordenesCompra to set
	 */
	public void setOrdenesCompra(List<OrdenCompra> ordenesCompra) {
		this.ordenesCompra = ordenesCompra;
	}

	/**
	 * @return the listasPrecios
	 */
	public List<ListaPrecios> getListasPrecios() {
		return listasPrecios;
	}

	/**
	 * @param listasPrecios
	 *            the listasPrecios to set
	 */
	public void setListasPrecios(List<ListaPrecios> listasPrecios) {
		this.listasPrecios = listasPrecios;
	}

	public OrdenCompra buscarOrdenCompra(int nroOC) {
		for (OrdenCompra oc : ordenesCompra) {
			if (oc.getNroOC() == nroOC) {
				return oc;
			}
		}
		return null;
	}

	public ProveedorView crearProveedorView() {
		return new ProveedorView(this.idProveedor, this.razonSocial,
				this.direccion, this.telefono);
	}

	public void agregarListaPrecios(ListaPrecios lp) {
		// TODO Auto-generated method stub
		this.listasPrecios.add(lp);

	}

	public void agregarRemito(Remito rem) {
		// TODO Auto-generated method stub
		remitos.add(rem);

	}

}
